home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / STRINGED.I < prev    next >
Encoding:
Text File  |  1990-10-24  |  5.3 KB  |  3 lines

  1. ⓪ IMPLEMENTATION MODULE StringEditor;⓪ ⓪ (*$Y+,H+,R-*)⓪ ⓪ FROM SYSTEM IMPORT ASSEMBLER;⓪ ⓪ IMPORT Strings;⓪ ⓪ FROM MOSGlobals IMPORT Key;⓪ ⓪ ⓪ PROCEDURE StdKeyCmd (k: Key): Commands;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(MOVE.W  -(A3),D0        ; scan⓪(SWAP    D0⓪(CLR     D0⓪(SUBQ.L  #1,A3           ; ctrl⓪(MOVE.B  -(A3),D0        ; ch⓪(LEA     tab(PC),A0⓪&lup:⓪(MOVE.L  (A0)+,D1⓪(MOVE.W  (A0)+,D2⓪(BEQ     ende⓪(CMP.L   D1,D0⓪(BNE     lup⓪&ende:⓪(MOVE    D2,(A3)+⓪(RTS⓪ ⓪&tab:⓪(DC.L    $72000D      DC.W    enter⓪(DC.L    $1C000D      DC.W    enter⓪(DC.L    $01001B      DC.W    clrln⓪(DC.L    $610000      DC.W    abort⓪(DC.L    $520000      DC.W    insert⓪(DC.L    $4B0000      DC.W    left⓪(DC.L    $4D0000      DC.W    right⓪(DC.L    $730000      DC.W    wdleft  (* Ctrl-left  *)⓪(DC.L    $740000      DC.W    wdright (* Ctrl-right *)⓪(DC.L    $53007F      DC.W    delete⓪(DC.L    $0E0008      DC.W    backspace⓪(DC.L    $470000      DC.W    clreol (* Home *)⓪(DC.L    $470037      DC.W    clrln  (* Shift-Home *)⓪(DC.L    $4B0034      DC.W    sol    (* Shift-left  *)⓪(DC.L    $4D0036      DC.W    eol    (* Shift-right *)⓪(DC.L    $53001F      DC.W    delwdright (* Ctrl-Delete *)⓪(DC.L    0            DC.W    none⓪$END⓪"END StdKeyCmd;⓪"(*$L=*)⓪ ⓪ PROCEDURE StdAscCmd (k: Key): Commands;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L  #3,A3           ; scan, ctrl⓪(MOVE.B  -(A3),D0        ; ch⓪(CLR     D2⓪(LEA     tab(PC),A0⓪&lup:⓪(MOVE.B  (A0)+,D1⓪(MOVE.B  (A0)+,D2⓪(BEQ     ende⓪(CMP.B   D1,D0⓪(BNE     lup⓪&ende:⓪(MOVE    D2,(A3)+⓪(RTS⓪ ⓪&tab:⓪(DC.B    13      DC.B    enter⓪(DC.B    3       DC.B    abort⓪(DC.B    8       DC.B    backspace⓪(DC.B    21      DC.B    right⓪(DC.B    127     DC.B    delete⓪(DC.B    9       DC.B    eol⓪(DC.B    27      DC.B    clrln⓪(DC.B    24      DC.B    clrln⓪(DC.B    0       DC.B    none⓪$END⓪"END StdAscCmd;⓪"(*$L=*)⓪ ⓪ PROCEDURE StdWSCmd (k: Key): Commands;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L  #3,A3           ; scan, ctrl⓪(MOVE.B  -(A3),D0        ; ch⓪(CLR     D2⓪(LEA     tab(PC),A0⓪&lup:⓪(MOVE.B  (A0)+,D1⓪(MOVE.B  (A0)+,D2⓪(BEQ     ende⓪(CMP.B   D1,D0⓪(BNE     lup⓪&ende:⓪(MOVE    D2,(A3)+⓪(RTS⓪ ⓪&tab:⓪(DC.B    13      DC.B    enter⓪(DC.B    3       DC.B    abort⓪(DC.B    8       DC.B    backspace⓪(DC.B    27      DC.B    clrln⓪(DC.B    127     DC.B    delete⓪(DC.B    19      DC.B    left⓪(DC.B    20      DC.B    delwdright⓪(DC.B    22      DC.B    insert⓪(DC.B    1       DC.B    eol⓪(DC.B    4       DC.B    right⓪(DC.B    6       DC.B    eol⓪(DC.B    0       DC.B    none⓪$END⓪"END StdWSCmd;⓪"(*$L=*)⓪ ⓪ VAR ok: BOOLEAN;⓪ ⓪ PROCEDURE Edit( VAR dStr: ARRAY OF CHAR; mayCtrl: BOOLEAN;⓪0hdl_write: WrChProc; hdl_writeString: WrStrProc;⓪0hdl_moveCursor: CrsrProc; hdl_readCmd: RdProc );⓪ ⓪"VAR limit, sLen, index: INTEGER;⓪&finish: BOOLEAN;⓪ ⓪"PROCEDURE ConsOutRpt( c : CHAR; no : INTEGER );⓪$VAR i: INTEGER;⓪$BEGIN⓪&FOR i:= 1 TO no DO hdl_write(c) END⓪$END ConsOutRpt;⓪ ⓪"PROCEDURE DelR;⓪$BEGIN⓪&IF index < sLen THEN⓪(Strings.Delete (dStr,index,1,ok);⓪(hdl_moveCursor(-index);⓪(hdl_writeString (dStr);⓪(hdl_write(' ');⓪(hdl_moveCursor(-(sLen-index));⓪(DEC (sLen)⓪&END⓪$END DelR;⓪ ⓪"PROCEDURE ClrEoln;⓪$BEGIN⓪&ConsOutRpt(' ',sLen + index);⓪&hdl_moveCursor(-(sLen-index));⓪&sLen:= index;⓪&dStr[sLen]:=0C;⓪$END ClrEoln;⓪ ⓪"PROCEDURE pos1;⓪$BEGIN⓪&hdl_moveCursor(-index);⓪&index:= 0;⓪$END pos1;⓪ ⓪"VAR i: CARDINAL;⓪&keycode: Commands;⓪&ch: CHAR;⓪ ⓪"BEGIN (* EditString *)⓪$limit:= HIGH (dStr)+1;⓪$finish:= FALSE;⓪$index:= 0;⓪$sLen:= Strings.Length (dStr);⓪$hdl_writeString (dStr);⓪$hdl_moveCursor( -sLen );⓪$REPEAT⓪&hdl_readCmd (keycode,ch);⓪&CASE keycode OF⓪&|left:⓪(IF index > 0 THEN⓪*DEC( index);⓪*hdl_moveCursor(-1)⓪(END⓪&|right:⓪(IF ( index < sLen) & ( index < limit) THEN⓪*INC( index);⓪*hdl_moveCursor(1)⓪(END⓪&|backspace:⓪(IF index > 0 THEN⓪*DEC( index);⓪*hdl_moveCursor(-1);⓪*DelR⓪(END⓪&|delete:⓪(DelR⓪&|clrln:⓪(pos1;⓪(ClrEoln⓪&|clreol:⓪(ClrEoln⓪&|sol:⓪(pos1;⓪&|eol:⓪(hdl_moveCursor (sLen-index);⓪(index:= sLen⓪&|enter:⓪(finish:= TRUE⓪&|abort:⓪(pos1;⓪(ClrEoln;⓪(finish:= TRUE⓪&|insert:⓪(IF (index < sLen) & (sLen < limit) THEN⓪*Strings.Insert (' ',index,dStr,ok);⓪*INC (sLen);⓪*hdl_moveCursor(-index);⓪*hdl_writeString (dStr);⓪*hdl_moveCursor (-(sLen-index))⓪(END;⓪&|none:⓪(IF (index<limit) AND (ch#0C) AND (mayCtrl OR (ch>=' ')) THEN⓪*hdl_write (ch);⓪*dStr [index]:= ch;⓪*IF index >= sLen THEN⓪,INC (sLen);⓪,IF sLen < limit THEN⓪.dStr [sLen]:= 0C;⓪,END⓪*END;⓪*INC(index);⓪(END⓪&ELSE⓪((* nix *)⓪&END;⓪$UNTIL finish;⓪$hdl_moveCursor (sLen - index)⓪"END Edit;⓪ ⓪ BEGIN⓪"StdCmd:= StdKeyCmd;⓪ END StringEditor.⓪ ə
  2. (* $00000A7F$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$00000C53$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCAÇ$00000036T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$000010F4$0000110E$00001128$00001198$0000125B$00000028$00000036$00000D07$00000D76$00000E54$00000E6E$00000E92$00000EEC$00000F4D$00000F98$00001016£Çé*)
  3.